]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell-app: Raise windows in reverse order to preserve the stacking
authorRui Matos <tiagomatos@gmail.com>
Sat, 19 May 2012 15:25:00 +0000 (17:25 +0200)
committerRui Matos <tiagomatos@gmail.com>
Sat, 19 May 2012 15:32:12 +0000 (17:32 +0200)
ShellApp keeps track of windows sorted by most recently used first
which means that when raising windows we need to start from the end of
the list to finish with the correct stacking order.

This patch just makes the code agree with the comment which was
already there.

https://bugzilla.gnome.org/show_bug.cgi?id=676371

src/shell-app.c

index e1648418e1786acf3afd9e1360c3c9068953ca20..31756a3293bfdf0b67e898266a3a86a1e22c1229 100644 (file)
@@ -493,7 +493,7 @@ shell_app_activate_window (ShellApp     *app,
     return;
   else
     {
-      GSList *iter;
+      GSList *windows_reversed, *iter;
       ShellGlobal *global = shell_global_get ();
       MetaScreen *screen = shell_global_get_screen (global);
       MetaDisplay *display = meta_screen_get_display (screen);
@@ -511,13 +511,16 @@ shell_app_activate_window (ShellApp     *app,
       /* Now raise all the other windows for the app that are on
        * the same workspace, in reverse order to preserve the stacking.
        */
-      for (iter = windows; iter; iter = iter->next)
+      windows_reversed = g_slist_copy (windows);
+      windows_reversed = g_slist_reverse (windows_reversed);
+      for (iter = windows_reversed; iter; iter = iter->next)
         {
           MetaWindow *other_window = iter->data;
 
           if (other_window != window)
             meta_window_raise (other_window);
         }
+      g_slist_free (windows_reversed);
 
       /* If we have a transient that the user's interacted with more recently than
        * the window, pick that.